package com.dog.basics.service.mtkj;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dog.basics.bean.dto.admin.mtkj.OrderEditDto;
import com.dog.basics.bean.dto.admin.mtkj.OrderFromDto;
import com.dog.basics.bean.dto.api.mtkj.ApiEndOrderAddDto;
import com.dog.basics.bean.dto.api.mtkj.ApiGOrderAddDto;
import com.dog.basics.bean.dto.api.mtkj.ApiLyOrderAddDto;
import com.dog.basics.bean.dto.api.mtkj.ApiOrderFromDto;
import com.dog.basics.bean.model.mtkj.MtDeviceOrder;
import com.dog.basics.bean.vo.admin.mtkj.OrderVo;
import com.dog.basics.bean.vo.api.mtkj.ApiOrderPrepayVo;
import com.dog.basics.bean.vo.api.mtkj.ApiOrderVo;
import com.dog.basics.common.annotation.RedisLock;
import com.dog.basics.common.util.PageParam;

/**
 * <p>
 * 设备订单 服务类
 * </p>
 *
 * @author wph
 * @since 2020-09-29
 */
public interface IMtDeviceOrderService extends IService<MtDeviceOrder> {
    /**
     * @Description: 分页设备订单
     * @Param: status
     * @return: IPage<OrderVo>
     * @Author: wph
     * @Date:
     */
    IPage<OrderVo> getPageList(PageParam page, OrderFromDto obj);

    /**
     * @Description: APP分页设备订单
     * @Param: status
     * @return: IPage<OrderVo>
     * @Author: wph
     * @Date:
     */
    IPage<ApiOrderVo> getApiPageList(PageParam page, ApiOrderFromDto obj);

    /**
     * @Description: 4G确认使用
     * @Param: OrderAddDto
     * @return: R
     * @Author: wph
     * @Date:
     */
    Boolean save4gObj(ApiGOrderAddDto obj);
    /**
     * @Description: 4G开始使用
     * @Param: OrderAddDto
     * @return: R
     * @Author: wph
     * @Date:
     */
    Boolean save4gStartObj(ApiLyOrderAddDto obj);
    /**
     * @Description: 4G轮训接口
     * @Param: OrderAddDto
     * @return: R
     * @Author: wph
     * @Date:
     */
    Integer get4gObj(Long lockPassId);
    /**
     * @Description: 4G轮训接口为0的处理(网络中断)(待优化)
     * @Param: OrderAddDto
     * @return: R
     * @Author: wph
     * @Date:
     */
    Boolean get4gZeroObj(Long lockPassId);
    /**
     * @Description: 蓝牙开始使用
     * @Param: OrderAddDto
     * @return: R
     * @Author: wph
     * @Date:
     */
    Boolean saveLyObj(ApiLyOrderAddDto obj);

    /**
     * @Description: 设备订单完成
     * @Param: OrderBasketAddDto
     * @return: R
     * @Author: wph
     * @Date:
     */
    Boolean endOrder(ApiEndOrderAddDto obj);

    /**
     * @Description: 设备订单支付
     * @Param: OrderBasketAddDto
     * @return: R
     * @Author: wph
     * @Date:
     */
    ApiOrderPrepayVo payOrder(Long id);

    /**
     * 小程序微信 Order订单 - 支付回调
     *
     * @param xmData
     * @return guonh 2019年10月14日
     */
    Boolean wxMiniPayLowerOrderCallback(String xmData);
    /**
     * @Description: 关闭订单
     * @Param: OrderFromDto
     * @return: IPage<OrderVo>
     * @Author: wph
     * @Date:
     */
    Boolean closeOrder(Long id);
    /**
     * @Description: 结束订单
     * @Param: OrderFromDto
     * @return: IPage<OrderVo>
     * @Author: wph
     * @Date:
     */
    Boolean endOrder(Long id);
    /**
     * @Description: 修改订单金额
     * @Param: OrderFromDto
     * @return: IPage<OrderVo>
     * @Author: wph
     * @Date:
     */
    Boolean editObj(OrderEditDto obj);
    /**
     * @Description: 确认退款(pc)
     * @Param: OrderFromDto
     * @return: IPage<PlatePageVo>
     * @Author: wph
     * @Date:
     */
    Boolean pcReturnObj(Long id);
}
